package com.heatup.apt.common.dao.user;


import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import com.baomidou.mybatisplus.mapper.AutoMapper;
import com.heatup.apt.model.api.UserProductServiceResultModel;
import com.heatup.apt.model.user.UserProductService;

/**
 *
 * UserProductService 表数据库控制层接口
 *
 */
@Component
public interface UserProductServiceMapper extends AutoMapper<UserProductService> {

	/** 根据用户id查询用户的所有用的服务  **/	
	public List<UserProductService> quertUserProductServiceByUserId(@Param("userId")Integer userId);
	
	public List<UserProductService> quertUserProductService(Map<String,Object> map);
	
	/** 根据用户id查询用户的所有用的服务类型  **/
	public List<String> queryUserProductServiceType(@Param("userId")Integer userId);
	
	UserProductService queryUserProductServiceByUserIdAndType(@Param("userId")Integer userId,@Param("productServiceType") String product_service_type);
	
	/** 根据用户id查询用户的所有未开通的服务类型  **/
	public List<String> queryUserProductServiceTypeIsNotOpen(@Param("userId")Integer userId);

	/** 根据用户id和门店查询用户是否拥有该门店的团课包月服务 *／
	 * @param map userId,storeId
	 * @return 用户拥有除基础服务之外的服务列表
	 */
	public List<UserProductServiceResultModel> queryUserProductServiceResultBy(Map<String,Object> map);
	
	UserProductService queryUserProductServiceToUserLevel(@Param("userId")Integer userId); 
	
	/**
	 * 判断用户是否拥有免费的自助服务
	 * 规则：
	 * 1. 拥有年卡  
	 * 2. 拥有未完成的私教订单 
	 * 3. 拥有年卡  并且该时间段内没有过该门店自助健身 仅限于 校验自助健身的订单
	 * 4. 拥有未完成的私教订单并且时间段内没有过该门店自助健身 仅限于 校验自助健身的订单
	 * @param userId	 用户ID 必传
	 * @param storeId	非必传  但是用于自助健身订单的校验的时候就是必传
	 * @param startTime	非必传  但是用于自助健身订单的校验的时候就是必传
	 * @return
	 */
	public boolean checkUserIsHasSelfServiceOrOngoingPtOrder(@Param("userId")Integer userId, @Param("storeId")Integer storeId, @Param("startTime") Date startTime);
	
	public Integer checkUserIsHasYearCardService(Integer userId);
}